Telegram Group & Telegram Channel
ℹ️ Что такое @Transactional в Spring?

@Transactional — это аннотация, которая управляет транзакциями в Spring. Она позволяет автоматически начать, зафиксировать или откатить транзакцию при выполнении бизнес-логики. Применяется к методам или классам, где важно обеспечить целостность данных.

🔹 Как работает:


Когда метод помечен @Transactional, Spring создает прокси-объект, который начинает транзакцию до выполнения метода и завершает её после. В случае исключения транзакция откатывается, если оно не является проверяемым (checked exception).

🔹 Конфигурации @Transactional:

▪️ Propagation (распространение):

- REQUIRED (по умолчанию): метод должен выполняться в существующей транзакции, если она есть, иначе создается новая.
- REQUIRES_NEW: всегда создает новую транзакцию, приостанавливая текущую.
- SUPPORTS: метод может выполняться в транзакции, но не требует её обязательного наличия.
- MANDATORY: требует существования транзакции, иначе будет выброшено исключение.
- NOT_SUPPORTED: метод выполняется без транзакции, даже если она существует.
- NEVER: запрещает выполнение метода в транзакции, иначе выбрасывается исключение.
- NESTED: позволяет создавать вложенные транзакции, которые могут быть откатаны отдельно от внешней.

▪️ Isolation (изолированность):

- DEFAULT: уровень изоляции БД по умолчанию.
- READ_UNCOMMITTED: минимальная изоляция, позволяет читать незавершенные изменения.
- READ_COMMITTED: запрещает чтение незавершенных транзакций.
- REPEATABLE_READ: гарантирует, что данные не изменятся во время транзакции.
- SERIALIZABLE: максимальная изоляция, исключает фантомные записи.

▪️ Timeout и Rollback:

timeout: ограничивает время выполнения транзакции (по умолчанию бесконечно).
rollbackFor/noRollbackFor: настраивают, какие исключения должны вызвать откат или нет.

🔹 Когда
@Transactional не сработает?

- @Transactional не срабатывает, если метод с этой аннотацией вызывается внутри другого метода того же класса. Это связано с тем, что Spring использует прокси для управления транзакциями, и он активируется только при внешних вызовах. Когда метод вызывается из другого метода того же класса, прокси не задействуется, и транзакция не будет создана.
- Также нужно помнить, что аннотация не работает с private методами.
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/javaproglib/6011
Create:
Last Update:

ℹ️ Что такое @Transactional в Spring?

@Transactional — это аннотация, которая управляет транзакциями в Spring. Она позволяет автоматически начать, зафиксировать или откатить транзакцию при выполнении бизнес-логики. Применяется к методам или классам, где важно обеспечить целостность данных.

🔹 Как работает:


Когда метод помечен @Transactional, Spring создает прокси-объект, который начинает транзакцию до выполнения метода и завершает её после. В случае исключения транзакция откатывается, если оно не является проверяемым (checked exception).

🔹 Конфигурации @Transactional:

▪️ Propagation (распространение):

- REQUIRED (по умолчанию): метод должен выполняться в существующей транзакции, если она есть, иначе создается новая.
- REQUIRES_NEW: всегда создает новую транзакцию, приостанавливая текущую.
- SUPPORTS: метод может выполняться в транзакции, но не требует её обязательного наличия.
- MANDATORY: требует существования транзакции, иначе будет выброшено исключение.
- NOT_SUPPORTED: метод выполняется без транзакции, даже если она существует.
- NEVER: запрещает выполнение метода в транзакции, иначе выбрасывается исключение.
- NESTED: позволяет создавать вложенные транзакции, которые могут быть откатаны отдельно от внешней.

▪️ Isolation (изолированность):

- DEFAULT: уровень изоляции БД по умолчанию.
- READ_UNCOMMITTED: минимальная изоляция, позволяет читать незавершенные изменения.
- READ_COMMITTED: запрещает чтение незавершенных транзакций.
- REPEATABLE_READ: гарантирует, что данные не изменятся во время транзакции.
- SERIALIZABLE: максимальная изоляция, исключает фантомные записи.

▪️ Timeout и Rollback:

timeout: ограничивает время выполнения транзакции (по умолчанию бесконечно).
rollbackFor/noRollbackFor: настраивают, какие исключения должны вызвать откат или нет.

🔹 Когда
@Transactional не сработает?

- @Transactional не срабатывает, если метод с этой аннотацией вызывается внутри другого метода того же класса. Это связано с тем, что Spring использует прокси для управления транзакциями, и он активируется только при внешних вызовах. Когда метод вызывается из другого метода того же класса, прокси не задействуется, и транзакция не будет создана.
- Также нужно помнить, что аннотация не работает с private методами.

BY Библиотека джависта | Java, Spring, Maven, Hibernate


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/javaproglib/6011

View MORE
Open in Telegram


Библиотека джависта | Java Spring Maven Hibernate Telegram | DID YOU KNOW?

Date: |

A Telegram spokesman declined to comment on the bond issue or the amount of the debt the company has due. The spokesman said Telegram’s equipment and bandwidth costs are growing because it has consistently posted more than 40% year-to-year growth in users.

Mr. Durov launched Telegram in late 2013 with his brother, Nikolai, just months before he was pushed out of VK, the Russian social-media platform he founded. Mr. Durov pitched his new app—funded with the proceeds from the VK sale—less as a business than as a way for people to send messages while avoiding government surveillance and censorship.

Библиотека джависта | Java Spring Maven Hibernate from in


Telegram Библиотека джависта | Java, Spring, Maven, Hibernate
FROM USA